package com.awccis.admin.service;

import com.awccis.admin.model.config.ConfigBean;
import com.awccis.admin.model.order.BreakOrderBean;
import com.awccis.admin.model.order.OrderSimpleInfo;
import com.awccis.common.session.DriverSession;
import com.awccis.customer.model.order.OrderBean;
import com.awccis.driver.model.DriverInfo;

import java.util.HashMap;
import java.util.List;

/**
 * @author: txp
 * @date: 2018/5/19 on 下午8:59
 * @since: 1.0
 * @description:
 **/
public interface AdminOrderService {

    /**
     * 获取所有订单的简单信息
     *
     * @param hashMap startCount，limitCounts
     * @return 订单列表
     */
    List<OrderSimpleInfo> getAllSimpleOrderInfo(HashMap hashMap);

    /**
     * 获取订单总数
     *
     * @return 订单总数
     */
    Integer getOrdersSumNumber();

    /**
     * 通过司机的driverID获取司机的订单
     *
     * @param hashMap driverId , startCount, limitCounts
     * @return 订单列表
     */
    List<OrderSimpleInfo> getDriverOrderById(HashMap hashMap);

    /**
     * 通过乘客获取司机的订单
     *
     * @param hashMap customerPhone , startCount, limitCounts
     * @return 订单列表
     */
    List<OrderSimpleInfo> getCustomerOrderByPhone(HashMap hashMap);

    /**
     * 通过订单ID获取订单详情
     *
     * @param orderId orderId
     * @return 订单信息
     */
    OrderBean getOrderDetailInfoById(int orderId);

    /**
     * 获取所有未完成订单
     *
     * @return list
     */
    List<OrderBean> getAllNoFinishOrder();

    /**
     * 获取当前driver的未完成订单
     *
     * @param driverId driverId
     * @return order
     */
    OrderBean getBreakOrder(int driverId);

    /**
     * 查找可以推送的司机
     *
     * @return list
     */
    List<DriverSession> getDriverToSend();

    /**
     * 转移订单
     *
     * @param oldOrderId     原订单ID
     * @param newOrder       新订单数据
     * @param breakOrderBean 故障订单信息
     * @return 执行结果
     */
    Boolean transferOrder(int oldOrderId, OrderBean newOrder, BreakOrderBean breakOrderBean);

    /**
     * 获取所有系统参数
     *
     * @return 系统参数
     */
    ConfigBean getSystemInfo();

    /**
     * 更改系统参数
     *
     * @param configBean 系统参数
     * @return 更改结果
     */
    boolean setSystemInfo(ConfigBean configBean);

    /**
     * 获取该司机订单总数
     *
     * @param hashMap 司机信息
     * @return 订单总数
     */
    Integer getOrdersSumNumByDId(HashMap hashMap);

    /**
     * 获取该乘客订单总数
     *
     * @param hashMap 乘客信息
     * @return 订单总数
     */
    Integer getOrdersSumNumByCId(HashMap hashMap);
}
